#include "../miscsampledev.h"

#include "stdio.h"
#include "unistd.h"
#include "sys/types.h"
#include "sys/stat.h"
#include "fcntl.h"
#include "stdlib.h"
#include "string.h"
/***************************************************************
Copyright © ALIENTEK Co., Ltd. 1998-2029. All rights reserved.
文件名 : miscbeepApp.c
作者 : 左忠凯
版本 : V1.0
描述 : MISC 驱动框架下的 beep 测试 APP。
其他 : 无
使用方法 ：./miscbeepApp /dev/miscbeep 0 关闭蜂鸣器
./misdcbeepApp /dev/miscbeep 1 打开蜂鸣器
论坛 : www.openedv.com
日志 : 初版 V1.0 2019/8/20 左忠凯创建
***************************************************************/

/*
* @description : main 主程序
* @param - argc : argv 数组元素个数
* @param - argv : 具体参数
* @return : 0 成功;其他 失败
*/
int main(int argc, char *argv[])
{
	int fd, ret_value;
	char *filename;

	if(argc != 2){
		printf("no dev file path!\r\n");
		return -1;
 	}

	filename = argv[1];
	fd = open(filename, O_RDWR); /* 打开 beep 驱动 */
	if(fd < 0){
		printf("file %s open failed!\r\n", argv[1]);
 		return -1;
 	}

	// 转换结果
	// result = atoi(argv[2]); // 将char*转成int

	// 写结构体数据
	// debug
	static struct net_filter_change_policy change_policy;
	change_policy.policy.dst_addr_begin.ip = 127;
	// 结构体 转 void*
	void *change_policy_data = (void *)&change_policy;

	ret_value = write(fd, change_policy_data, sizeof(change_policy));

	// void 转 结构体
	// struct net_filter_change_policy change_policy_trans = *(struct net_filter_change_policy *)change_policy_data;
	// printf("%d",change_policy_trans.policy.dst_addr_begin.ip);

	if(ret_value < 0){
		printf("BEEP Control Failed!\r\n");
		close(fd);
		return -1;
	}

	ret_value = close(fd); /* 关闭文件 */
	if(ret_value < 0){
		printf("file %s close failed!\r\n", argv[1]);
		return -1;
	}
	return 0;
}